House Sales in King County, USA

Predict house price using regression

W tym zadaniu będziemy szacować ceny domów.

Dataframe zawiera dane typu :

Dane zawierają takie dane jak:

Możemy wyszczególnić w tych danych 4 kategorie:

Wynika stąd, że dane typu "id" powinny zostać usunięte z tego względu, że mogą powodować szum, z drugiej strony w id może być ukryta jakaś informacja, z której model mógłby wywnioskować cenę. Aby przygotować dane należy też udostępnić datę sprzedaży w bardziej przystępnym formacie.

1. Wytrenowany model

2. Predykcja dla wybranych obserwacji

3. Dekompozycja LIME dla wybranych obserwacji

4. Porównanie dekompozycji LIME

Odp. 4 Dekompozycje LIME są stabilne, pomiędzy kilkoma uruchomieniami widać niewielkie różnice w wyjaśnieniach, lecz zbytnio od siebie nie odbiegają. Widać, że nasz model nauczył się, że dostęp do nabrzeża jest bardzo istotny przy wycenie domu oraz ogólny stan budynku.

5. Wytrenowanie innego modelu

Odp 5. W powyższym przykładzie atrubuty są różne dla różnych modeli. Cena jest bliższa prawdziwej dla XGBoost'a, co może znaczyć, że XGBoost potrafi się lepiej nauczyć przewidywać ceny domów.

6. Wyjaśnienie osiągniętych rezultatów

  1. Jak widać na powyższych wykresach wyjaśnienie nieznacznie się różni, ale wynika to z konstrukcji lime'a czyli losowania punktów w otoczeniu badanego punktu. Jednak najistotniejsze atrybuty za każdym razem mają zbliżony wpływ na wynik. Stąd można wnioskować, że LIME jest stabilny.

  2. Po wytrenowaniu dwóch modeli lasu losowego i xgboost'a widać, że wyjaśnienie się różni. Najważniejszym atrybutem jest dostęp do nabrzeża, co w tym przypadku znaczy, że nie ma dostępu do nabrzeża (waterfront = 0). XGBoost jest znacznie bliżej poprawnego wyniku niż las losowy. Drugim najbardziej istotnym atrybutem według XGBoosta jest wielkość terenu przy domu, natomiast według lasu losowego większy wpływ na cenę ma widok, który w przypadku tego domu jest słaby i został oceniony na 0. Las losowy w ogóle nie wziął pod uwagę wielkości podwórka jako ważnego atrybutu (sqft_lot jest poza top8 atrybutów). Prawdopodobnie wynika to z faktu, że XGBoost jest znacznie lepszym modelem i potrafi bardziej zbliżyć się do poprawnego wyniku.